Tömb feltöltése véletlen számokkal és az elemek elrendezése shell-rendezéssel, eljárások használatával (Shellrendezes.pas)

program Shellrendezes;
uses crt;
var n:integer;
    a:array [1..300] of integer;

procedure cserel(mit,mire:integer);
var x:integer;
begin
   x:=a[mit];
   a[mit]:=a[mire];
   a[mire]:=x;
   end;

procedure feltolt;
var i:integer;
begin
   for i:=1 to n do begin
      a[i]:=trunc(90*random)+1;
      end;
   end;

procedure kiir;
var i:integer;
begin
   for i:=1 to n do begin
      writeln(a[i]);
      end;
   end;

procedure rendez(kezd,k:integer);
var i,j:integer;
begin
   i:=kezd+k;
   while(i<=n) do begin
      j:=i;
      while (j>k) do begin
         if (a[j]<a[j-k]) then begin
            cserel(j,j-k);
            j:=j-k;
            end
         else break;
         end;
      i:=i+k;
      end;
   end;

procedure krendez(k:integer);
var i:integer;
begin
   i:=1;
   while (i<=k) do begin
      rendez(i,k);
      i:=i+1;
      end;
   end;

procedure shell;
begin
   krendez(31);
   krendez(15);
   krendez(7);
   krendez(3);
   krendez(1);
   end;

BEGIN
   clrscr;
   write('n:= ');
   readln(n);
   feltolt;
   writeln('A szamok rendezes elott:');
   kiir;
   writeln('');
   writeln('A szamok rendezes utan:');
   shell;
   kiir;
   readkey;
END.